Symbolic Execution for GUI Testing
نویسندگان
چکیده
A Graphical User Interface (GUI) is an abstraction providing users with a more natural way of interacting with computers. It consists of objects like buttons, text boxes, toolbars etc. The communication between users and GUIs is event driven. Users can modify the state of a GUI and trigger events that lead to the execution of different code fragments. Hence, in order to test a GUI one should execute event sequences simulating user behaviors. While the state of some GUI widgets is limited to a small number of values (the value of a radio button), others have a wide range of possible states (the value of a text box). Such widgets are used for data input from the user in the form of text (alphabetic or numeric). Since program execution may depend on the user input, it is a challenge to select suitable values in a way that allows thorough testing. We propose symbolic execution for obtaining these inputs. During symbolic execution, each branch of the program is visited and the constraints for control variables are resolved determining if it is reachable or not. Thus, by symbolically executing code that depends on user input, we can obtain values that ensure visiting each reachable branch in the program.
منابع مشابه
Event Listener Analysis and Symbolic Execution for Testing GUI Applications
Graphical User Interfaces (GUIs) are composed of virtual objects, widgets, which respond to events triggered by user actions. Therefore, test inputs for GUIs are event sequences that mimic user interaction. The nature of these sequences and the values for certain widgets, such as textboxes, causes a two-dimensional combinatorial explosion. In this paper we present Barad, a GUI testing framework...
متن کاملParameterized GUI Tests
GUI testing is a form of system testing where test cases are based on user interactions. A user interaction may be encoded by a sequence of events (e.g., mouse clicks) together with input data (e.g., string values for text boxes). For selecting event sequences, one can use the black-box approach based on Event Flow Graphs. For selecting input data, one can use the white-box approach based on pa...
متن کاملSymbolic Execution and Software Testing
We review different flavors of symbolic execution, ranging from generalized symbolic execution to dynamic symbolic execution or concolic testing. We also identify challenges to symbolic execution, such as dealing with: looping constructs, multi-threading, recursive data structures, and complex mathematical constraints, as well as scalability challenges due to the path explosion problem. We disc...
متن کاملDART: A Framework for Regression Testing "Nightly/daily Builds" of GUI Applications
“Nightly/daily building and smoke testing” have become widespread since they often reveal bugs early in the software development process. During these builds, software is compiled, linked, and (re)tested with the goal of validating its basic functionality. Although successful for conventional software, smoke tests are difficult to develop and automatically rerun for software that has a graphica...
متن کاملFinding Errors in Python Programs Using Dynamic Symbolic Execution
For statically typed languages, dynamic symbolic execution (also called concolic testing) is a mature approach to automated test generation. However, extending it to dynamic languages presents several challenges. Complex semantics, fragmented and incomplete type information, and calls to foreign functions lacking precise models make symbolic execution difficult. We propose a symbolic execution ...
متن کامل